30

您所在的位置:网站首页 python pandas 导出数据 30

30

2023-08-31 11:34| 来源: 网络整理| 查看: 265

30_Pandas.DataFrame提取(选择)指定行名和列名的行和列

从pandas.DataFrame中提取(选择)行名称(索引名称)和列名称(列名称)满足特定条件的行或列。

了解如何提取元素包含特定字符串而不是行名/列名的行,参阅以下文章。

08_Pandas提取含有指定字符串的行(完全匹配,部分匹配)

步骤基本上是相同的:使用pandas字符串方法获取布尔数组,并使用它来提取具有布尔索引引用的行或列。

pandas字符串方法具有以下功能。

str.contains():包含特定的字符串str.endswith():以特定字符串结尾str.startswith():以特定的字符串开头str.match():匹配正则表达式模式

在此,对于以下内容进行说明:

提取行名称满足条件的行 query() 提取具有满足条件的列名的列提取满足条件的行名和列名的元素

以下面的数据为例。

import pandas as pd df = pd.read_csv('./data/30/sample_pandas_normal.csv', index_col=0) print(df) # age state point # name # Alice 24 NY 64 # Bob 42 CA 92 # Charlie 18 CA 70 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57 提取行名称满足条件的行

将字符串方法应用于可以通过index属性获得的索引对象。

print(df.index) # Index(['Alice', 'Bob', 'Charlie', 'Dave', 'Ellen', 'Frank'], dtype='object', name='name') print(df.index.str.contains('li')) # [ True False True False False False]

参阅获得的布尔序列中的行。

print(df[df.index.str.contains('li')]) # age state point # name # Alice 24 NY 64 # Charlie 18 CA 70

该方法与其他字符串方法相同。

print(df.index.str.endswith('e')) # [ True False True True False False] print(df[df.index.str.endswith('e')]) # age state point # name # Alice 24 NY 64 # Charlie 18 CA 70 # Dave 68 TX 70 query()

也可以使用query()方法指定索引条件。

如果已安装numexpr,则需要指定参数engine =‘python’(numexpr版本2.6.5,pandas版本0.23.0)。 可以通过索引或索引列的名称(示例中的名称)指定索引列。

print(df.query('index.str.contains("li")', engine='python')) # age state point # name # Alice 24 NY 64 # Charlie 18 CA 70 print(df.query('name.str.endswith("e")', engine='python')) # age state point # name # Alice 24 NY 64 # Charlie 18 CA 70 # Dave 68 TX 70 提取具有满足条件的列名的列

对于列名,将字符串方法应用于可以通过columns属性获得的索引对象。

print(df.columns) # Index(['age', 'state', 'point'], dtype='object') print(df.columns.str.endswith('e')) # [ True True False]

列的布尔索引引用为loc [:.Bool array]。

该位置由列名指定/行名是loc,位置由行号指定/列号是iloc,但是在使用布尔索引引用的情况下,loc或iloc均可接受。

print(df.loc[:, df.columns.str.endswith('e')]) # age state # name # Alice 24 NY # Bob 42 CA # Charlie 18 CA # Dave 68 TX # Ellen 24 CA # Frank 30 NY print(df.iloc[:, df.columns.str.endswith('e')]) # age state # name # Alice 24 NY # Bob 42 CA # Charlie 18 CA # Dave 68 TX # Ellen 24 CA # Frank 30 NY

有关loc和iloc的详细信息,请参阅以下文章。

04_Pandas获取和修改任意位置的值(at,iat,loc,iloc) 提取满足条件的行名和列名的元素

还可以为行名和列名指定条件。

将所需的字符串方法应用于索引和列,并使用loc或iloc引用布尔索引。

print(df.loc[df.index.str.contains('li'), df.columns.str.endswith('e')]) # age state # name # Alice 24 NY # Charlie 18 CA


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3